/**
 * <h3>ThemeService</h3>
 * <p> 大赛管理服务接口 </p>
 *
 * <h3>功能描述</h3>
 * <p> 定义大赛模块的核心业务逻辑接口，供 Controller 调用，屏蔽底层数据实现细节 </p>
 * <p> 包含增删改查及条件查询等功能定义 </p>
 *
 * <h3>元数据</h3>
 * <ul>
 *     <li> 作者：郭强 </li>
 *     <li> 创建日期：2025年05月18日 14:20:15 </li>
 * </ul>
 *
 * <h3>其他信息</h3>
 * <ul>
 *     <li> 参考实现：{@link ThemeServiceImpl} </li>
 *     <li> 示例代码：{@code List<Theme> themes = themeService.selectThemeList(dto);} </li>
 * </ul>
 *
 * @apiNote 接口应保持职责单一原则，避免将多个不相关功能合并定义
 * @implSpec 继承自 {@link IService<ThemeDTO>}，复用MyBatis Plus提供的通用接口
 * @since v1.0.0.0
 */
package com.dnndo.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dnndo.system.domain.Theme;
import com.dnndo.system.domain.dto.ThemeDTO;

import java.util.List;

/**
 * 大赛管理服务接口
 */
public interface ThemeService extends IService<ThemeDTO> {

    /**
     * 根据条件查询大赛列表（分页）
     *
     * @param dto 查询条件封装对象
     * @return List<Theme> 符合条件的大赛信息列表
     */
    List<Theme> selectThemeList(ThemeDTO dto);

    /**
     * 根据ID获取大赛详细信息
     *
     * @param themeId 大赛唯一标识符
     * @return Theme 包含详细信息的对象
     */
    ThemeDTO selectThemeById(Long themeId);

    /**
     * 新增大赛信息
     *
     * @param dto 封装新增数据的DTO对象
     * @return int 受影响的记录数
     */
    int insertTheme(ThemeDTO dto);

    /**
     * 修改大赛信息
     *
     * @param dto 封装更新数据的DTO对象
     * @return int 受影响的记录数
     */
    int updateThemeById(ThemeDTO dto);

    /**
     * 删除指定ID的大赛信息
     *
     * @param themeId 要删除的大赛ID
     * @return int 受影响的记录数
     */
    int deleteThemeById(Integer themeId);
}
